package ufc.principal;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class LerArquivo {
	
	public List<Transacao> lerArquivo(String nomeArq){
		File dir = new File("C:\\");
		File arq = new File(dir, nomeArq);
		List<Transacao> transacoes = new ArrayList<Transacao>();
		System.out.print("Schedule de Entrada:");
		try{
			FileReader fileReader = new FileReader(arq);
			BufferedReader bufferedReader = new BufferedReader(fileReader);
			String linha = "";
		while ( ( linha = bufferedReader.readLine() ) != null) {
			transacoes.add(lerTransacao(linha));
		}
		fileReader.close();
		bufferedReader.close();
		} catch(IOException e){
				e.printStackTrace();
		}
		return transacoes;
		
		}

	private Transacao lerTransacao(String entrada) {
		// TODO Auto-generated method stub
		Dado dado= new Dado();
		 List<Operacao> list = new ArrayList<Operacao>();
		 Transacao t1 = new Transacao();
		 
		 
		 
		String[] operacoes = entrada.split("-");
		
		StringBuffer saida = new StringBuffer();
		int numberTipo = 0;
		int transacao = 0;
		
	     
     
	for (int i = 1; i < operacoes.length; i++) {
		      System.out.print(operacoes[i].substring(0, 5));
              String tipo = operacoes[i].substring(0, 1);
              transacao = Integer.parseInt(operacoes[i].substring(1, 2));
              
              String objeto = null;
              if (!tipo.equals("c") || !tipo.equals("a")) {
                  objeto = operacoes[i].substring(3, 4);
              } 
              else{
            	  objeto = "";
              }
          	  
          	  dado.setValor(objeto);
          	  
				switch (tipo) {
				case "r":
					numberTipo = 1;
					break;
				case "w":
					numberTipo = 2;
					break;
				case "c":
					numberTipo = 3;
					break;
				case "a":
					numberTipo = 4;
					
					break;
				}
              Operacao op = new Operacao(numberTipo, dado);
              list.add(op);
              //operacao.add(new Operacao(tipo, dado));
              
      }
	
	   t1.setId(transacao);
      t1.setOperacaoList(list);
     
      return t1;
	}
}
